Access Quiz exportieren

[Dies ist ein Fallbeispiel, das in einem separaten Fenster angezeigt wird. So können Sie das Beispiel und ein beliebiges anderes Hilfethema gleichzeitig betrachten. Das Fenster des Fallbeispiels lässt sich verschieben, in seiner Grösse ändern und über das Schliessfeld verlassen]

Die Autorin erstellt einen interaktiven Quiz ähnlich wie eine schriftliche Klausur. Allerdings kann ein Quiz nur leicht korrigierbare Aufgaben enthalten, nämlich Mehrfachwahl- und Zuordnungsaufgaben. Wenn Sie im Formular 2. Test ausgeben die Schaltfläche '1 Access Quiz exportieren' drücken, werden die folgenden Tabellen generiert:

Tabellenname Zweck in QUIZ_BACKEND.MDB
QuizFRAGEN Fragentexte für die Mehrfachwahl- und Zuordnungsaufgaben
QuizMEHRFACHWAHL Alternativen und Lösungen der Mehrfachwahlaufgaben
QuizBUCHSTABEN_ALTERNATIVEN Buchstabenpräfices und -texte der Zuordnungsaufgaben
QuizZAHLEN_ALTERNATIVEN Zahlenpräfices und -texte der Zuordnungsaufgaben
QuizZUORDNUNGS_LÖSUNGEN Korrekte Präfixpaare der Zuordnungslösungen
QuizTEST Identifikation des laufenden Tests
SCORESMC Benutzerantworten auf Mehrfachwahlfragen
SCORESZO Benutzerantworten auf Zuordnungsfragen

Die gelb markierten Tabellen enthalten die gleichen Tabellen wie jene der entsprechenden schriftlichen Klausur. Die blau markierten Tabellen enthalten nach dem Export nur die Struktur und wenige Initialwerte. Die eigentlichen Daten werden erst nach der Beantwortung der Fragen angefügt:

Falls die Testautorin die Selbstkorrektur nicht zulässt, werden die Antworten in TESTVERWALTUNG automatisch korrigiert. Dazu fügt die Ereignisprozedur BtnTestAbgeben_Click() die beiden Ergebnistabellen SCORESMC und SCORESZO den gleichnamigen Aggregationstabellen von TESTVERWALTUNG_BACKEND.MDB an.

Die Ereignisprozedur der Schaltfläche 'Als Quizaufgaben exportieren' ist komplex. Wir analysieren Sie deshalb nur entwurfssprachlich. Den entsprechenden VBA-Code finden Sie, wenn Sie in der Entwurfsansicht auf die Schaltfläche BtnQuizexport klicken, dann mit »Alt/Enter die Eigenschaftenliste anzeigen und schliesslich zur Ereignisprozedur BtnQuizexport_Click() verzweigen. Diese Prozedur erstellt QUIZ_BACKEND.MDB nicht vollständig: Einige Tabellen werden zwar aus Testverwaltung_Backend.mdb kopiert, für andere Tabellen wird aber nur die Struktur (Feldnamen und Primärschlüssel) definiert, die Daten werden aber erst während der Beantwortung der Fragen durch die QuizteilnehmerInnen angefügt.

Die unten entworfene Lösung ist eine von mehreren Möglichkeiten. Sie verwendet in erster Linie die von Access angebotene prozedurale Tabellenmanipulation. Statt auf die Unterschiede zwischen DAO (Data Acces Objects) und ADO (ActiveX Data Objects) einzutreten, veranschaulichen wir an einem komplexen Beispiel die Unterschiede zwischen prozeduraler Eintabellen-Manipulationen und deklarativen Mehrtabellen-Abfragen in QBE oder SQL.

Initialisiere die Datenbank QUIZ_BACKEND.MDB
'(Primärschlüssel unterstrichen)
Lösche die frühere Version von QUIZ_BACKEND.MDB
Erstelle eine leere Datenbank QUIZ_BACKEND.MDB
Frage, ob Selbstkorrektur gewünscht ist
QuizMEHRFACHWAHL
  Definiere die Struktur
    Fragenschlüssel
    Alternativenschlüssel
    Alternativentext  'für Verbundoperationen mit QuizSESSIONEN
    Lösung
  Erstelle die Tabelle
    Kopiere satzweise das Ergebnis einer SQL-Abfrage aus den ...
      Mehrfachwahl-Aufgaben des gewählten Testtermins mit den Feldern
      Fragenschlüssel, Alternativentext, Lösung
    Füge an das Ende jedes Satzes einen Alternativenschlüssel hinzu, der ...
      die Alternativen jeder Aufgabe von 1 bis 4 durchnummeriert
QuizBUCHSTABENPRÄFICES
  Definiere die Struktur
    Fragenschlüssel
    Zahlenpräfix
    TmpBuchstabenpräfices
  Erstelle die Tabelle
    Erstelle aus der normalisierten Tabelle ZUORDNUNGSLÖSUNGEN eine
    denormalisierte Tabelle TmpBUCHSTABENPRÄFICES mit Wiederholungsgruppen 
     'Zwei Zeilen [A,1] und [A,2] werden z.B. zu einer einzigen Zeile [A,12]
QuizTEST
  Definiere die Struktur
    Testschlüssel
    Veranstaltung
    SemesterOderQuiz
    Jahr
  Erstelle die Tabelle 
    Erstelle den einzigen Satz mit Testschlüssel = -1, falls Selbstkorrektur
SCORESMC
  Definiere die Struktur
    Fragenschlüssel
    Alternativenschlüssel
    Matrikelnummer
    Testschlüssel
    Benutzerlösung
SCORESZO
  Definiere die Struktur
    Fragenschlüssel
    Matrikelnummer
    Testschlüssel
    Zahlenpräfix
    Buchstabenpräfix
Exportiere die Ergebnistabellen dr folgenden Abfragen unter den rot geschriebenen Namen
  'Eigenschaften wie Indices und Primärschlüssel bleiben nicht erhalten!
  QUIZQryFragenMitText          -> QuizFRAGEN
  QUIZQryBuchstabenalternativen -> QuizBUCHSTABEN_ALTERNATIVEN
  QUIZQryZahlenalternativen     -> QuizZAHLEN_ALTERNATIVEN
  QUIZQryZuordnungslösungen     -> QuizZUORDNUNGS_LÖSUNGEN